using BasicData.API.Application.Command;
using BasicData.API.Dtos;
using BasicData.ErrorCode;
using System.Collections.Generic;
using System.Threading.Tasks;

namespace BasicData.API.Application.Mediator
{
    /// <summary>
    /// 生产信息中介者接口
    /// </summary>
    public interface IProductionInfoMediator
    {
        /// <summary>
        /// 获取所有生产信息
        /// </summary>
        /// <returns>生产信息列表</returns>
        Task<APIResult<List<ProductionInfoDTO>>> GetAllProductionInfosAsync();
        
        /// <summary>
        /// 根据ID获取单个生产信息
        /// </summary>
        /// <param name="command">查询命令</param>
        /// <returns>生产信息</returns>
        Task<APIResult<ProductionInfoWithGoodsDTO>> GetProductionInfoByIdAsync(GetProductionInfoByIdCommand command);
        
       
        
        /// <summary>
        /// 添加生产信息
        /// </summary>
        /// <param name="command">添加生产信息命令</param>
        /// <returns>添加结果</returns>
        Task<APIResult<ProductionInfoDTO>> AddProductionInfoAsync(AddProductionInfoCommand command);
        
        /// <summary>
        /// 修改生产信息
        /// </summary>
        /// <param name="command">修改生产信息命令</param>
        /// <returns>修改结果</returns>
        Task<APIResult<ProductionInfoDTO>> UpdateProductionInfoAsync(UpdateProductionInfoCommand command);
        
        /// <summary>
        /// 批量删除生产信息（软删除）
        /// </summary>
        /// <param name="command">批量删除命令</param>
        /// <returns>删除结果</returns>
        Task<APIResult<bool>> BatchDeleteProductionInfosAsync(BatchDeleteProductionInfoCommand command);
        
        /// <summary>
        /// 单个产品信息软删除
        /// </summary>
        /// <param name="command">软删除命令</param>
        /// <returns>删除结果</returns>
        Task<APIResult<bool>> SoftDeleteProductionAsync(SoftDeleteProductionCommand command);
    }
} 
